//
//  CLTableView.m
//  CLTableViewProject
//
//  Created by Charles on 16/5/20.
//  Copyright © 2016年 Charles. All rights reserved.
//

#import "CLTableView.h"
#import <UIKit/UIKit.h>
@implementation CLTableView

-(instancetype)initWithFrame:(CGRect)frame{
    if (self = [super initWithFrame:frame]) {
        [self tableView];
    }
    return self;
}

#pragma mark - 一堆方法
- (void)setTableHeaderView:(UIView *)header{
    self.tableFooterView = header;
}
- (void)setTableFooterView:(UIView *)footer{
    self.tableFooterView = footer;
}

#pragma mark - UITableViewDelegate

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    CLTableItem *cellItem = [self.dataSource tableView:tableView itemForRowAtIndexPath:indexPath];
    return [cellItem.viewClass tableView:tableView rowHeightForItem:cellItem];
}

#pragma mark _ UITableViewDataSource

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return self.dataSource.sections.count;
}

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
    CLTableSection * mysection = self.dataSource.sections[section];
    return mysection.headerItem.viewHeight;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    CLTableItem *cellItem = [self.dataSource tableView:tableView itemForRowAtIndexPath:indexPath];
    [self didSelectCellItem:cellItem atIndexPath:indexPath];
}

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
    CLTableSection * mysection = self.dataSource.sections[section];
    return mysection.headerView;
}

- (void)didSelectCellItem:(CLTableItem *)item atIndexPath:(NSIndexPath *)indexPath {
    NSLog(@"第%zi行",indexPath.row);
}

- (UITableView *)tableView{
    if (_tableView == nil) {
        _tableView = [[UITableView alloc]initWithFrame:self.bounds style:UITableViewStylePlain];
        _tableView.delegate = self;
        [self addSubview:_tableView];
    }
    return _tableView;
}
@end
